package com.lzw.breezeNovel.webApp.mapper.comic;

import com.lzw.breezeNovel.model.entity.pojo.comic.Comic;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @author 清风明月
 * @Package com.lzw.breezeNovel.webApp.mapper.comic
 * @date 2025/3/15
 * @description 漫画的mapper
 */
@Mapper
@SuppressWarnings("all")
public interface ComicMapper {

    /**
     * 获取漫画排行榜
     * @return
     */
    List<Comic> getComicRank(Integer start, Integer size, String gender,Long id);

    /**
     * 获取漫画数量
     * @return
     */
    @Select("select count(*) from comic")
    Long selectCount();

    /**
     * 获取免费漫画
     *
     * @param start
     * @param size
     * @param id
     * @return
     */
    List<Comic> getFreeComic(Integer start, Integer size, Long id);

    /**
     * 获取vip漫画
     *
     * @param start
     * @param size
     * @param id
     * @return
     */
    List<Comic> getVipComic(Integer start, Integer size, Long id);

    /**
     * 根据类型获取漫画数量
     * @param type
     * @return
     */
    @Select("select count(*) from comic where type=#{type}")
    int selectCountByType(String type);

    /**
     * 获取最新漫画
     * @param start
     * @param size
     * @return
     */
    List<Comic> getNewComic(Integer start, Integer size);

    /**
     * 根据类型获取漫画
     * @param start
     * @param size
     * @param keyword
     * @param id
     * @return
     */
    List<Comic> searchComic(Integer start, Integer size, String keyword, Long id);

    /**
     * 获取漫画数量
     * @return
     */
    Long selectCountByKeyword(String keyword);

    /**
     * 根据类型获取漫画
     * @param start
     * @param size
     * @param typeId
     * @return
     */
    List<Comic> getTypeComic(Integer start, Integer size, String type,Integer id);

    /**
     * 根据用户id和漫画id查询评分
     * @param comicId
     * @return
     */
    Comic selectComic(Long comicId);

    /**
     * 更新漫画信息
     * @param comic
     */
    Integer updateComic(Long comicId, Double rating);

    /**
     * 更新漫画播放量
     * @param comicId
     */
    @Update("update comic set play_count= play_count + 1 where id=#{comicId}")
    void updatePlayCount(Long comicId);
}
